/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pessoas.presenter.stateContatoView;

import javax.swing.JOptionPane;
import pessoas.CommandContato.SalvarCommand;
import pessoas.collection.Contatos;
import pessoas.dataHora.DataHora;
import pessoas.interfaces.ICommandContato;
import pessoas.model.Contato;
import pessoas.model.Usuario;
import pessoas.presenter.ContatoPresenter;
import pessoas.presenter.ContatoZelador;

/**
 *
 * @author Bush
 */
public class InclusaoState extends ManterContatoState {

    private DataHora dataHora;
    private ICommandContato contatoCommand;
    private Contato contato;
    private ContatoZelador contatoZelador;

    public InclusaoState(ContatoPresenter presenter, Contato contato) {
        super(presenter, contato);
        this.dataHora = new DataHora();
        this.contato = contato;
        this.contatoZelador = ContatoZelador.getInstancia();
        iniciandoView();
    }

    public void iniciandoView() {
        presenter.getView().getTxtNome().setText("");
        presenter.getView().getTxtSobrenome().setText("");
        presenter.getView().getTxtTelefone().setValue("");
        presenter.getView().getComboOper().setSelectedIndex(0);
        presenter.getView().getComboUf().setSelectedIndex(0);
        presenter.getView().getBtnSalvar().setText("Salvar");
        presenter.getView().getBtnFechar().setText("Cancelar");
        presenter.getView().getBtnNovo().setVisible(false);

        presenter.getView().getTxtNome().setEditable(true);
        presenter.getView().getTxtSobrenome().setEditable(true);
        presenter.getView().getTxtTelefone().setEditable(true);

        presenter.funcaoBtnSalvarEditar(false);// troca função do Botão para Salvar

    }

    @Override
    public void salvar(Usuario usuario, Contatos contatos) {
        contatoCommand = new SalvarCommand(presenter, contatos, usuario);
        contatoCommand.exercutar();
    }

    @Override
    public void editar(Usuario usuario, Contatos contatos, Contato contato) {
    }

    @Override
    public void novo() {
    }

    @Override
    public void fechar() {
        //Criar um mementoContato para voltar ao estado anterior
        presenter.getView().dispose();
    }

    @Override
    public void cancelar() {
        try {
            this.contato = new Contato(null, null, null, null, null);
            this.contato.restaurarContato(contatoZelador.getUltimoEstadoSalvo());
            presenter.setEstado(new VisualizacaoState(presenter, contato));
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    }

}
